/*
    MANGO Multimedia Development Platform
    Copyright (C) 2012-2020 Twilight Finland 3D Oy Ltd. All rights reserved.
*/
#ifdef GLEXT_PROC

// ---------------------------------------------------------------------------------
// WGL extensions
// ---------------------------------------------------------------------------------

// WGL_ARB_buffer_region
GLEXT_PROC(PFNWGLCREATEBUFFERREGIONARBPROC, wglCreateBufferRegionARB);
GLEXT_PROC(PFNWGLDELETEBUFFERREGIONARBPROC, wglDeleteBufferRegionARB);
GLEXT_PROC(PFNWGLSAVEBUFFERREGIONARBPROC, wglSaveBufferRegionARB);
GLEXT_PROC(PFNWGLRESTOREBUFFERREGIONARBPROC, wglRestoreBufferRegionARB);

// WGL_ARB_create_context
GLEXT_PROC(PFNWGLCREATECONTEXTATTRIBSARBPROC, wglCreateContextAttribsARB);

// WGL_ARB_extensions_string
GLEXT_PROC(PFNWGLGETEXTENSIONSSTRINGARBPROC, wglGetExtensionsStringARB);

// WGL_ARB_make_current_read
GLEXT_PROC(PFNWGLMAKECONTEXTCURRENTARBPROC, wglMakeContextCurrentARB);
GLEXT_PROC(PFNWGLGETCURRENTREADDCARBPROC, wglGetCurrentReadDCARB);

// WGL_ARB_pbuffer
GLEXT_PROC(PFNWGLCREATEPBUFFERARBPROC, wglCreatePbufferARB);
GLEXT_PROC(PFNWGLGETPBUFFERDCARBPROC, wglGetPbufferDCARB);
GLEXT_PROC(PFNWGLRELEASEPBUFFERDCARBPROC, wglReleasePbufferDCARB);
GLEXT_PROC(PFNWGLDESTROYPBUFFERARBPROC, wglDestroyPbufferARB);
GLEXT_PROC(PFNWGLQUERYPBUFFERARBPROC, wglQueryPbufferARB);

// WGL_ARB_pixel_format
GLEXT_PROC(PFNWGLGETPIXELFORMATATTRIBIVARBPROC, wglGetPixelFormatAttribivARB);
GLEXT_PROC(PFNWGLGETPIXELFORMATATTRIBFVARBPROC, wglGetPixelFormatAttribfvARB);
GLEXT_PROC(PFNWGLCHOOSEPIXELFORMATARBPROC, wglChoosePixelFormatARB);

// WGL_ARB_render_texture
GLEXT_PROC(PFNWGLBINDTEXIMAGEARBPROC, wglBindTexImageARB);
GLEXT_PROC(PFNWGLRELEASETEXIMAGEARBPROC, wglReleaseTexImageARB);
GLEXT_PROC(PFNWGLSETPBUFFERATTRIBARBPROC, wglSetPbufferAttribARB);

// WGL_3DL_stereo_control
GLEXT_PROC(PFNWGLSETSTEREOEMITTERSTATE3DLPROC, wglSetStereoEmitterState3DL);

// WGL_AMD_gpu_association
GLEXT_PROC(PFNWGLGETGPUIDSAMDPROC, wglGetGPUIDsAMD);
GLEXT_PROC(PFNWGLGETGPUINFOAMDPROC, wglGetGPUInfoAMD);
GLEXT_PROC(PFNWGLGETCONTEXTGPUIDAMDPROC, wglGetContextGPUIDAMD);
GLEXT_PROC(PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC, wglCreateAssociatedContextAMD);
GLEXT_PROC(PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC, wglCreateAssociatedContextAttribsAMD);
GLEXT_PROC(PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC, wglDeleteAssociatedContextAMD);
GLEXT_PROC(PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC, wglMakeAssociatedContextCurrentAMD);
GLEXT_PROC(PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC, wglGetCurrentAssociatedContextAMD);
GLEXT_PROC(PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC, wglBlitContextFramebufferAMD);

// WGL_EXT_display_color_table
GLEXT_PROC(PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC, wglCreateDisplayColorTableEXT);
GLEXT_PROC(PFNWGLLOADDISPLAYCOLORTABLEEXTPROC, wglLoadDisplayColorTableEXT);
GLEXT_PROC(PFNWGLBINDDISPLAYCOLORTABLEEXTPROC, wglBindDisplayColorTableEXT);
GLEXT_PROC(PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC, wglDestroyDisplayColorTableEXT);

// WGL_EXT_extensions_string
GLEXT_PROC(PFNWGLGETEXTENSIONSSTRINGEXTPROC, wglGetExtensionsStringEXT);

// WGL_EXT_make_current_read
GLEXT_PROC(PFNWGLMAKECONTEXTCURRENTEXTPROC, wglMakeContextCurrentEXT);
GLEXT_PROC(PFNWGLGETCURRENTREADDCEXTPROC, wglGetCurrentReadDCEXT);

// WGL_EXT_pbuffer
GLEXT_PROC(PFNWGLCREATEPBUFFEREXTPROC, wglCreatePbufferEXT);
GLEXT_PROC(PFNWGLGETPBUFFERDCEXTPROC, wglGetPbufferDCEXT);
GLEXT_PROC(PFNWGLRELEASEPBUFFERDCEXTPROC, wglReleasePbufferDCEXT);
GLEXT_PROC(PFNWGLDESTROYPBUFFEREXTPROC, wglDestroyPbufferEXT);
GLEXT_PROC(PFNWGLQUERYPBUFFEREXTPROC, wglQueryPbufferEXT);

// WGL_EXT_pixel_format
GLEXT_PROC(PFNWGLGETPIXELFORMATATTRIBIVEXTPROC, wglGetPixelFormatAttribivEXT);
GLEXT_PROC(PFNWGLGETPIXELFORMATATTRIBFVEXTPROC, wglGetPixelFormatAttribfvEXT);
GLEXT_PROC(PFNWGLCHOOSEPIXELFORMATEXTPROC, wglChoosePixelFormatEXT);

// WGL_EXT_swap_control
GLEXT_PROC(PFNWGLSWAPINTERVALEXTPROC, wglSwapIntervalEXT);
GLEXT_PROC(PFNWGLGETSWAPINTERVALEXTPROC, wglGetSwapIntervalEXT);

// WGL_I3D_digital_video_control
GLEXT_PROC(PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC, wglGetDigitalVideoParametersI3D);
GLEXT_PROC(PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC, wglSetDigitalVideoParametersI3D);

// WGL_I3D_gamma
GLEXT_PROC(PFNWGLGETGAMMATABLEPARAMETERSI3DPROC, wglGetGammaTableParametersI3D);
GLEXT_PROC(PFNWGLSETGAMMATABLEPARAMETERSI3DPROC, wglSetGammaTableParametersI3D);
GLEXT_PROC(PFNWGLGETGAMMATABLEI3DPROC, wglGetGammaTableI3D);
GLEXT_PROC(PFNWGLSETGAMMATABLEI3DPROC, wglSetGammaTableI3D);

// WGL_I3D_genlock
GLEXT_PROC(PFNWGLENABLEGENLOCKI3DPROC, wglEnableGenlockI3D);
GLEXT_PROC(PFNWGLDISABLEGENLOCKI3DPROC, wglDisableGenlockI3D);
GLEXT_PROC(PFNWGLISENABLEDGENLOCKI3DPROC, wglIsEnabledGenlockI3D);
GLEXT_PROC(PFNWGLGENLOCKSOURCEI3DPROC, wglGenlockSourceI3D);
GLEXT_PROC(PFNWGLGETGENLOCKSOURCEI3DPROC, wglGetGenlockSourceI3D);
GLEXT_PROC(PFNWGLGENLOCKSOURCEEDGEI3DPROC, wglGenlockSourceEdgeI3D);
GLEXT_PROC(PFNWGLGETGENLOCKSOURCEEDGEI3DPROC, wglGetGenlockSourceEdgeI3D);
GLEXT_PROC(PFNWGLGENLOCKSAMPLERATEI3DPROC, wglGenlockSampleRateI3D);
GLEXT_PROC(PFNWGLGETGENLOCKSAMPLERATEI3DPROC, wglGetGenlockSampleRateI3D);
GLEXT_PROC(PFNWGLGENLOCKSOURCEDELAYI3DPROC, wglGenlockSourceDelayI3D);
GLEXT_PROC(PFNWGLGETGENLOCKSOURCEDELAYI3DPROC, wglGetGenlockSourceDelayI3D);
GLEXT_PROC(PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC, wglQueryGenlockMaxSourceDelayI3D);

// WGL_I3D_image_buffer
GLEXT_PROC(PFNWGLCREATEIMAGEBUFFERI3DPROC, wglCreateImageBufferI3D);
GLEXT_PROC(PFNWGLDESTROYIMAGEBUFFERI3DPROC, wglDestroyImageBufferI3D);
GLEXT_PROC(PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC, wglAssociateImageBufferEventsI3D);
GLEXT_PROC(PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC, wglReleaseImageBufferEventsI3D);

// WGL_I3D_swap_frame_lock
GLEXT_PROC(PFNWGLENABLEFRAMELOCKI3DPROC, wglEnableFrameLockI3D);
GLEXT_PROC(PFNWGLDISABLEFRAMELOCKI3DPROC, wglDisableFrameLockI3D);
GLEXT_PROC(PFNWGLISENABLEDFRAMELOCKI3DPROC, wglIsEnabledFrameLockI3D);
GLEXT_PROC(PFNWGLQUERYFRAMELOCKMASTERI3DPROC, wglQueryFrameLockMasterI3D);

// WGL_I3D_swap_frame_usage
GLEXT_PROC(PFNWGLGETFRAMEUSAGEI3DPROC, wglGetFrameUsageI3D);
GLEXT_PROC(PFNWGLBEGINFRAMETRACKINGI3DPROC, wglBeginFrameTrackingI3D);
GLEXT_PROC(PFNWGLENDFRAMETRACKINGI3DPROC, wglEndFrameTrackingI3D);
GLEXT_PROC(PFNWGLQUERYFRAMETRACKINGI3DPROC, wglQueryFrameTrackingI3D);

// WGL_NV_DX_interop
GLEXT_PROC(PFNWGLDXSETRESOURCESHAREHANDLENVPROC, wglDXSetResourceShareHandleNV);
GLEXT_PROC(PFNWGLDXOPENDEVICENVPROC, wglDXOpenDeviceNV);
GLEXT_PROC(PFNWGLDXCLOSEDEVICENVPROC, wglDXCloseDeviceNV);
GLEXT_PROC(PFNWGLDXREGISTEROBJECTNVPROC, wglDXRegisterObjectNV);
GLEXT_PROC(PFNWGLDXUNREGISTEROBJECTNVPROC, wglDXUnregisterObjectNV);
GLEXT_PROC(PFNWGLDXOBJECTACCESSNVPROC, wglDXObjectAccessNV);
GLEXT_PROC(PFNWGLDXLOCKOBJECTSNVPROC, wglDXLockObjectsNV);
GLEXT_PROC(PFNWGLDXUNLOCKOBJECTSNVPROC, wglDXUnlockObjectsNV);

// WGL_NV_copy_image
GLEXT_PROC(PFNWGLCOPYIMAGESUBDATANVPROC, wglCopyImageSubDataNV);

// WGL_NV_delay_before_swap
GLEXT_PROC(PFNWGLDELAYBEFORESWAPNVPROC, wglDelayBeforeSwapNV);

// WGL_NV_gpu_affinity
GLEXT_PROC(PFNWGLENUMGPUSNVPROC, wglEnumGpusNV);
GLEXT_PROC(PFNWGLENUMGPUDEVICESNVPROC, wglEnumGpuDevicesNV);
GLEXT_PROC(PFNWGLCREATEAFFINITYDCNVPROC, wglCreateAffinityDCNV);
GLEXT_PROC(PFNWGLENUMGPUSFROMAFFINITYDCNVPROC, wglEnumGpusFromAffinityDCNV);
GLEXT_PROC(PFNWGLDELETEDCNVPROC, wglDeleteDCNV);

// WGL_NV_present_video
GLEXT_PROC(PFNWGLENUMERATEVIDEODEVICESNVPROC, wglEnumerateVideoDevicesNV);
GLEXT_PROC(PFNWGLBINDVIDEODEVICENVPROC, wglBindVideoDeviceNV);
GLEXT_PROC(PFNWGLQUERYCURRENTCONTEXTNVPROC, wglQueryCurrentContextNV);

// WGL_NV_swap_group
GLEXT_PROC(PFNWGLJOINSWAPGROUPNVPROC, wglJoinSwapGroupNV);
GLEXT_PROC(PFNWGLBINDSWAPBARRIERNVPROC, wglBindSwapBarrierNV);
GLEXT_PROC(PFNWGLQUERYSWAPGROUPNVPROC, wglQuerySwapGroupNV);
GLEXT_PROC(PFNWGLQUERYMAXSWAPGROUPSNVPROC, wglQueryMaxSwapGroupsNV);
GLEXT_PROC(PFNWGLQUERYFRAMECOUNTNVPROC, wglQueryFrameCountNV);
GLEXT_PROC(PFNWGLRESETFRAMECOUNTNVPROC, wglResetFrameCountNV);

// WGL_NV_vertex_array_range
GLEXT_PROC(PFNWGLALLOCATEMEMORYNVPROC, wglAllocateMemoryNV);
GLEXT_PROC(PFNWGLFREEMEMORYNVPROC, wglFreeMemoryNV);

// WGL_NV_video_capture
GLEXT_PROC(PFNWGLBINDVIDEOCAPTUREDEVICENVPROC, wglBindVideoCaptureDeviceNV);
GLEXT_PROC(PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC, wglEnumerateVideoCaptureDevicesNV);
GLEXT_PROC(PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC, wglLockVideoCaptureDeviceNV);
GLEXT_PROC(PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC, wglQueryVideoCaptureDeviceNV);
GLEXT_PROC(PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC, wglReleaseVideoCaptureDeviceNV);

// WGL_NV_video_out
GLEXT_PROC(PFNWGLGETVIDEODEVICENVPROC, wglGetVideoDeviceNV);
GLEXT_PROC(PFNWGLRELEASEVIDEODEVICENVPROC, wglReleaseVideoDeviceNV);
GLEXT_PROC(PFNWGLBINDVIDEOIMAGENVPROC, wglBindVideoImageNV);
GLEXT_PROC(PFNWGLRELEASEVIDEOIMAGENVPROC, wglReleaseVideoImageNV);
GLEXT_PROC(PFNWGLSENDPBUFFERTOVIDEONVPROC, wglSendPbufferToVideoNV);
GLEXT_PROC(PFNWGLGETVIDEOINFONVPROC, wglGetVideoInfoNV);

// WGL_OML_sync_control
GLEXT_PROC(PFNWGLGETSYNCVALUESOMLPROC, wglGetSyncValuesOML);
GLEXT_PROC(PFNWGLGETMSCRATEOMLPROC, wglGetMscRateOML);
GLEXT_PROC(PFNWGLSWAPBUFFERSMSCOMLPROC, wglSwapBuffersMscOML);
GLEXT_PROC(PFNWGLSWAPLAYERBUFFERSMSCOMLPROC, wglSwapLayerBuffersMscOML);
GLEXT_PROC(PFNWGLWAITFORMSCOMLPROC, wglWaitForMscOML);
GLEXT_PROC(PFNWGLWAITFORSBCOMLPROC, wglWaitForSbcOML);

#endif // GLEXT_PROC

// ---------------------------------------------------------------------------------
// WGL Extensions
// ---------------------------------------------------------------------------------

#ifdef WGL_EXTENSION

WGL_EXTENSION(ARB_buffer_region)
WGL_EXTENSION(ARB_multisample)
WGL_EXTENSION(ARB_extensions_string)
WGL_EXTENSION(ARB_pixel_format)
WGL_EXTENSION(ARB_make_current_read)
WGL_EXTENSION(ARB_pbuffer)
WGL_EXTENSION(ARB_render_texture)
WGL_EXTENSION(ARB_pixel_format_float)
WGL_EXTENSION(ARB_framebuffer_sRGB)
WGL_EXTENSION(ARB_create_context)
WGL_EXTENSION(ARB_create_context_profile)
WGL_EXTENSION(ARB_create_context_robustness)
WGL_EXTENSION(ARB_robustness_application_isolation)
WGL_EXTENSION(ARB_robustness_share_group_isolation)
WGL_EXTENSION(EXT_display_color_table)
WGL_EXTENSION(EXT_extensions_string)
WGL_EXTENSION(EXT_make_current_read)
WGL_EXTENSION(EXT_pixel_format)
WGL_EXTENSION(EXT_pbuffer)
WGL_EXTENSION(EXT_swap_control)
WGL_EXTENSION(EXT_depth_float)
WGL_EXTENSION(EXT_multisample)
WGL_EXTENSION(OML_sync_control)
WGL_EXTENSION(I3D_digital_video_control)
WGL_EXTENSION(I3D_gamma)
WGL_EXTENSION(I3D_genlock)
WGL_EXTENSION(I3D_image_buffer)
WGL_EXTENSION(I3D_swap_frame_lock)
WGL_EXTENSION(I3D_swap_frame_usage)
WGL_EXTENSION(NV_render_depth_texture)
WGL_EXTENSION(NV_render_texture_rectangle)
WGL_EXTENSION(ATI_pixel_format_float)
WGL_EXTENSION(NV_float_buffer)
//WGL_EXTENSION(3DL_stereo_control)
WGL_EXTENSION(EXT_pixel_format_packed_float)
WGL_EXTENSION(EXT_framebuffer_sRGB)
WGL_EXTENSION(NV_present_video)
WGL_EXTENSION(NV_video_output)
WGL_EXTENSION(NV_swap_group)
WGL_EXTENSION(NV_gpu_affinity)
WGL_EXTENSION(AMD_gpu_association)
WGL_EXTENSION(NV_video_capture)
WGL_EXTENSION(NV_copy_image)
WGL_EXTENSION(EXT_create_context_es2_profile)
WGL_EXTENSION(EXT_create_context_es_profile)
WGL_EXTENSION(NV_DX_interop)
WGL_EXTENSION(NV_DX_interop2)
WGL_EXTENSION(EXT_swap_control_tear)
WGL_EXTENSION(NV_delay_before_swap)
WGL_EXTENSION(ARB_context_flush_control)

#endif // WGL_EXTENSION
